iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
Software Development

從零開始構建能理解語義的 Linebot 架構系列 第 8

使用 AWS Lambda 開發 Serverless Event 接收器: 部署方式

  • 分享至 

  • xImage
  •  

概述:

本篇將介紹如何建立並部署 Lambda Function。
手動部署的方式比較繁瑣,不利於頻繁的更新與測試。而透過AWS CLI,可以讓我們把部署步驟自動化,以一鍵更新的方式進行部署,提升效率。為了使用AWS CLI進行自動化部署,則需要設定好AWS IAM(Identity and Access Management)來分配權限,確保我們能安全地進行自動化操作。

建立 Lambda Function

步驟非常簡單:

  • 登入AWS管理主控台,在搜尋欄輸入"Lambda",進入 AWS Lambda 主控台
    https://ithelp.ithome.com.tw/upload/images/20240922/20105227VMmDNd6LPF.png
  • 點選右邊的Create Function按鈕
    https://ithelp.ithome.com.tw/upload/images/20240922/20105227HBt4DAJmGp.png
  • 填寫表單,這邊需注意:
    • 需根據開發所使用的程式語言來選擇環境,本專案使用Node.js開發,所以選擇Node.js 20.x
    • 上一篇所述,需啟用function URL

https://ithelp.ithome.com.tw/upload/images/20240922/20105227hI577vCO1P.png

完成後即可建立一個新的Lambda Function。

手動部署/更新 Lambda Function

  • 當你需要上傳新版程式時,只需點擊右邊的Upload from 按鈕,就可以從AWS S3或者自己的電腦上,把壓縮好的程式上傳到AWS Lambda。
    https://ithelp.ithome.com.tw/upload/images/20240922/20105227vUbl1UQNN4.png
  • 每個程式語言的進入點和需要安裝的相依套件不太一樣,後面的章節會針對Node.js的版本來說明。

自動化部署: AWS CLI (Command Line Interface)

  • 透過 AWS CLI,你可以使用指令來執行需要存取 AWS 資源的操作。
    例如,當需要頻繁測試或上傳 Lambda function 時,我們並不希望每次都手動透過 GUI 操作,進行Build好-> 打開網頁 -> 上傳檔案,這種懷疑人生拖慢開發速度的事情。

  • 使用CLI指令可以自動化這些流程,例如把這些指令包裝成腳本(Script),甚至融入CI/CD流程。
    需要準備的工作如下:

使用AWS CLI部署的準備事項

1.在IAM Identity Center建立部署用的IAM Acount User
2.從AWS access portal 取得Account的temporary security credentials
3.設定AWS CLI使用的驗證資訊

在之後的步驟中,我們將會以下面範例來展示如何建立身份:

  • 建立User: henrydev
  • 建立Group: deploy-group
  • 建立包含Admin權限的permission set, 並將這組permission set指定給上述User / Group使用
  • 將上述User / Group指派給AWS帳號

AWS Identity and Access Management (IAM)

以下簡介AWS IAM:

IAM 簡介

AWS IAM 是用來管理身份和存取權限的工具,當你需要手動,或者透過AWS CLI存取AWS資源時,都必須通過身份驗證。
使用AWS CLI時會需要建立一組IAM user的 Access Credential,包含:

  • aws_access_key_id
  • aws_secret_access_key
  • aws_session_token

官方建議在IAM Identity Center建立這些憑證資料

IAM root user

  • 在建立AWS account時就會自動建立一個IAM root user, 可以在IAM Identity(一樣在AWS 管理主控台k可以搜尋到) 找到:
    https://ithelp.ithome.com.tw/upload/images/20240922/20105227zwCCzRUkrY.png
  • 除非要存取的resource一定要用root權限,否則不建議用root user操作。
  • 也不建議使用他的credential,因為root的權限太大,可以使用所有AWS resource。道理就和我們在管理一個正經的Server時,不會隨便把root權限交給其他帳號一樣。
  • 以部署Lambda為例,最好是Create一個部署用的IAM user, 然後把他的Access Credential拿來用

只有Root權限才能做的task清單

可參考: Tasks that require root user credentials

IAM 的身份架構

IAM 的權限架構由三個部分組成:Permission set, User, 和Group組成:

  • 一個User可屬於一個或多個Group
  • Permission Set則用來分配具體的權限,並應用於指定的User和Group。
  • 當Permission Set被指派給某個AWS帳號時,就可讓該Permission Set對應的User擁有該帳號的資源存取權限。

下一步

AWS官網建議使用一個非root權限的Admin使用者,來進行部署等任務的執行,
而這些工作會在預設的Identity Center directory來進行。

接下來我們將示範如何創建一個具備 Admin 權限的帳號 henrydev,並使用其存取憑證來操作 AWS CLI。
它具備admin權限的permission,使用他的access credential,就可以在AWS CLI使用此帳號的權限做事。


上一篇
使用 AWS Lambda 開發 Serverless Event 接收器: 串接LINE Bot Webhook
下一篇
使用 AWS Lambda 開發 Serverless Event 接收器: 建立IAM Account / 使用 AWS CLI進行部署
系列文
從零開始構建能理解語義的 Linebot 架構12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言